
#ifndef __SECURITY_CHAIN_H
#define __SECURITY_CHAIN_H

#include <vector>
#include "SecurityToken.h"

/** A chain of security tokens which can be passed to each SSH session
 * in order to authenticate them. */
class SecurityChain
{
   public:
      SecurityChain();
      ~SecurityChain();
      void addSecurityToken(SecurityToken *sectoken);
      int isExhausted();
      SecurityToken *getNextKeyToken();
      SecurityToken *getNextInteractiveToken();
      SecurityToken *getNextPasswordToken();
   private:
      /** Set of security tokens used to generate the security chain.
       * Any of the security token may be the correct one that can
       * open the remote link. */
      std::vector<SecurityToken *> secuchain;
};

#endif
